23

» WarCraft 3 / Переменные

Похожие вопросы:

ответ
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
Никак, только руками указывать или использовать это xgm.guru/p/fly-data
ответ
название KillUnit не совсем подходит
я бы назвал killUnitFromUnit или просто killFromUnit
Пушистый, а можно проще
define KillUnit(a) = KillUnit2(a)
по поводу правил
название должны соответствовать выполняемой функции
например если логическая переменная хранит жив юнит или нет то называться она должна isAlive или как то так
+ различные правила написания для различных языков
например в java первое слово в названии функции/переменной пишется с маленькой буквы а остальные с большой, а в названиях классов все слова с большой
в jass официальных соглашений нету но близы писали в функциях каждое слово с большой а константы большими буквами разделяя слова _
ответ
создать массив областей, каждой присвоить номер, потом рандомным числом пикать
ответ
DenisYulamanov,
Игрок ввел -тест как подстроку
Введеное собщение к примеру 1, 5 = -тест
Установить значение, как введеная строка, 7,введеная длина сообщения
ответ
Самым эффективным решением будет периодический перенос юнита-инвентаря к герою, юниту можно дать boolean флаг "isSelected"

23

» WarCraft 3 / Циклы

Похожие вопросы:

ответ
Custom script: exitwhen true
ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
ответ
а хотя стоп
у players_count нету начального значения
вместо
local integer players_count
local integer half_players
надо
local integer players_count = 0
local integer half_players = 0
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.

23

» WarCraft 3 / Крафт предметов.

Похожие вопросы:

ответ
Если у героя полностью заполнен инвентарь, то герой не сможет подбирать предметы, и ничего с этим сделать нельзя. Исключением являются руны и книги. Сделайте два варианта каждого предмета: пустышку, на основе руны, и настоящий, который хранится в инвентаре героя и имеет реальный эффект. Нет, другого способа нету.
ответ
Grok,
FSGUI - использование специальных декораций со сменными текстурами и зон реакции на мышку (не помню уже как они называются) в совокупности с фиксированной камерой для создания полноэкранного меню с произвольным содержимым (открытие такого меню перемещает камеру в специальную локацию, что не всегда удобно т.к. не видно персонажа и им толком нельзя управлять), в том числе так делали инвентари, системы крафта, деревья навыков и много чего другого.
DGUI - развитие идеи FSGUI, только вместо декораций используются юниты со специальной моделью в совокупности с камерой, положение которой полностью управляется из кода - так можно создать иллюзию окон и кнопок прямо на месте, не перемещая камеру в специальную локацию и тем более не мешая управлению персонажем. Учитывая особенности реализации, должно быть понятно, что это работает только с видимой областью, где могут отображаться юниты и совершенно не пригодно для манипуляций с панелью.
ответ
Без протекта? Значит открывай да делай.

23

» WarCraft 3 / Замена стандартных моделей.

Похожие вопросы:

ответ
Читаем статьи, учим русский, делаем сами.
Можете попробовать обратиться суда, если вообще не получается.
ответ
ну вот в чём твоя ошибка: Ты изменил название текстуры, а значит ты изменил и пути, тебе нужно зайти в war3modelEditor и там уже открыв модель выбрать вкладку: Windows=>Texture Manager, где будет список текстур, ты удаляешь 1 старую текстуру, которая у тебя была и добавляешь новую, при этом модель с текстурой должны лежать в одной папке, которая не содержит кириллицы (например путь должен быть d:\Users\User\Desktop\moroz - без русских букв ).
Переименовать новую текстуру на старую по идее не имеет смысла, потому что опять же ты сохранил её без текстуры, а => испоганил, накосячил, сломал (называй как хочешь).

23

» WarCraft 3 / передача предмета игроку

Похожие вопросы:

ответ
Т.е. ты сначала отдаешь от героя в рюкзак, а потом сразу же забираешь из рюкзака герою? И нафига? Нет, я понял, что у тебя с логикой туго, но все равно должен спросить.
Для простоты и аналогичности: создаёшь третьего юнита, кидаешь ему шмот из рюкзака, кидаешь шмот героя в рюкзак, кидаешь из третьего юнита в героя.
ответ
ответ
Все предметы изночально принадлежать враждебным, юзайте Custom value предмета, если 0 то предмет еще никто не подобрал, значит его получили убив монстра или купили, значит ставим ему custom value с номером игрока (нумеруйте не с 0, а с 1). Легко и просто, правда?

23

» WarCraft 3 / Как использовать % ?

Похожие вопросы:

ответ
HolyMoon:
это просто целочисленное значение, которое можно использовать для хранения каких-то данных, например. В целом поле никакой роли не играет.
кэшна, самое "бесполезное" нечто в вк3

совутую загуглить, что такое индексер юнитов, для чего он и с чем его едят
ответ
карта должна быть сохранена перед этой командой, вроде
и надо будет перезапустить редактор после использования чтобы изменения вступили в силу
ответ
Altf40160:
Steal nerves:
Спасибо, но меня интересует как рас "событие - юнит применяет способность" как же заставить героя компьютера использовать скилл!?
ставишь айди приказа и в условиях проверяешь его, например если у канала стоит айди thunderbolt, то в триггерах это будет молот бурь
ответ
IGOREIK, там четыре события на применение способности.
Пробуй разные, выбери, какое подойдёт лучше.
Вариант 8gabriel8 лучше. Немного дополню. Можно найти модель спецэффекта, который применяется во время включения способности. Посмотреть редакторами моделей (War3ME, например), какой там звук используется. И прописать импортированному звуку этот путь.

23

» WarCraft 3 / Угол крена

Принятый ответ
Похожие вопросы:

ответ
Ставить -90, через SHIFT+Enter
ответ
SetUnitLookAt
вращаешь нужную кость на посмотреть выше себя по оси Z

23

» WarCraft 3 / Читы

Похожие вопросы:

ответ
D4rkof, отлавливать чит по косвенным признакам
если чит был введён то убирать действие чита с помощью повторного ввода или завершать игру
ответ
Steal nerves:
Как можно конвертировать триггер в jass в WE?
Эх... Странные вопросы задаешь. Выделяешь/выбираешь тригггер, жмешь правка - конвентировать в текст
А про последствия не понял, разве бой своего юнита с чужим не есть отслеживание последствий?
отпечатка, случайно написал не. Да это последствие. По-другому никак.
Вот самый простой вариант от неуязвимости и всемогущества whosyourdaddy, который переводится как "кто твой папочка":
  1. Создаешь юнита в РО, так сказать будет куклой для битья. Если она умрет, то значит ее убили нечестным образом.
  2. Юнита надо будет отредактировать
  3. Делаем куклу незаметной. Так сказать нужно скрыть.Удаляешь у нее модель, потом скрываешь отображение на мини-карте (характеристики - скрыть мини-карту).
  4. Если это рабочий то выключить у него классификация - работник. Иначе иконка будет отображаться в игре.
  5. Делаешь так чтобы не мог атаковать, короче полностью отключаешь атаку (бои - атаки - нет)
  6. Делаешь его неподвижным, чтобы не убегал, когда его бьют
  7. Делаем неубиваемым. Реген. Скорость восстановления здоровья на максимум - 9999к. Запас здоровья тоже повыше (примечание: здоровье не должно быть слишком большим, а то ставил 9999к читом не мог убить, даже с 5000 хп,видимо из-за регена не умирал, поставил 1000). Затем можно дать невосприимчивость от магии, так сказать защитой от магии будет.
  8. даем способность москиты, так герой становится невыделяемый
  9. и убираем обзор видимости (характеристики - радиус обзора = 0 днем и ночью)
  10. создаем двух таких на карте, одного делаем вражеским (можно за нейтрально-враждебного), а другого за игрока
  11. создаем триггер, который будет наносить урон периодически от лица игрока, наносит 1 единицу урон. другой триггер ловит смерть
ответ
Короче: если ставить юнита, который относится к игроку, но самого игрока нет... То whosyourdaddy не будет работать на всех юнитах этого игрока.
ответ
Steal nerves:
Все работает. работает с специальными переменными, типа GetFilterUnit(). Вообще это условие, если это условие (фильтр) истинно, то этого юнита (GetFilterUnit), подходящего по условию, оставляет, а остальных отсеивает. У тебя, если условие истинно, выбирает всех. Мне кажется не работает. потому что радиус слишком маленький 90 - слишком маленький, едва ли кого выделишь. Надо еще дебагом проверять (выводи на экран) и проверяй кол-во юнитов в группе. Так написал, что не понятно, что тебе нужно. И вопрос закрыт? (закрой тему)
чтобы глобалки объявлять скачай jngp, подключи jasshelper (V jass)
в самом наверху триггера можно писать
globals
integer TTT = 0 //целочисленная
endglobals

23

» WarCraft 3 / Вопрос инкома

Похожие вопросы:

ответ
хотя ладно я сейчас добрый так что лови совет
вместо игрок 1 используй владелец выбранного юнита
и вместо того чтобы сразу добавлять ресурсы заноси их в переменную
и добавляй в конце
Nosferoh, сори но то что ты сказал это не оптимально
зачем усложнять ?

23

» WarCraft 3 / Проверка включенного триггера используя триггеры

Похожие вопросы:

ответ
Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.

23

» WarCraft 3 / 1 защиты = 1% блока

Похожие вопросы:

ответ
ClotPh, Движок знает во время завершения удара, будет промах или нет, сработает пассивка или нет, а ты нет, там не так все просто, так что триггерные аналоги изобретаем и усе.
ответ
Странное понимание механики. Не бывает универсального лучшего способа, потому и существуют разные способы для конкретных ситуаций.
А экономить байты и такты процессора, заранее пользуясь интерпретируемым скриптовым языком, это вообще моветон.
Разве массив в WarCraft III не предынициализирует 8192 ячейки памяти (по Вашей формуле, в моём случае он потребляет 8192*4=32768 байт, то есть 32Кб)? Он ведь не динамический.
Нет, он динамический. Исходный размер при создании - 1024. И расширяется на 1024 ячейки по мере доступа вплоть до максимальных 8192.

23

» WarCraft 3 / Выбор героев

Похожие вопросы:

ответ
zlowar, проверять пикнут ли этот герой и если пикнут то запрещать другим игрокам его пикать
ответ
Ну как бы диологовые окна работают как как их сделали, раз вы сделали диалок для одного игрока то его и видит 1 игрок.
Диалоговое окно нужно показывать всем играющим игрокам, и создавать триггер (на гуях проще 1 кнопка=1 триггер который следит за кнопной) и по нажатию кнопки смотреть какой игрок нажал на кнопку и создавать для него необходимого персонажа.
ответ
Открой стандартную карту "Охотники" и посмотри там как сделать это, она на 4х игроков!
D:\Warcraft 3\Warcraft III\Maps\Scenario\(4)WarChasers.w3m

23

» WarCraft 3 / Покупка спелов

Похожие вопросы:

ответ
Сделай плюсик в качестве способности-пустышки.
При её использовании создавай/выделяй юнита-пустышку, у которого есть способности-пустышки, соответствующие способностям героя.
При использовании этих пустышек будет прокачиваться способность героя.
Идея ясна?
ответ
в чем редактор вкв3 отличается от редактора ск2 - к сожалению, в вк3-шном эдиторе не удастся отловить все данные.
если ты скажешь, что конкретно делает твой спелл, тебе могут подсказать более легкий вариант исполнения
насчет спецэффектов - утечка решается просто
  1. создаешь точку, если спец на земле. если спец на юните, точка не требуется.
  2. собсно воспроизводишь спец
  3. и сразу его удаляешь. спец удалится тогда, когда доиграет до конца его анимация
  4. кастом скриптом удаляешь точку, если 1 часть 1 пункта актуальна

23

» WarCraft 3 / Строчка

Похожие вопросы:

ответ
статьи в помощь
на крайняк пиши свой аи на джасс
ответ
нужно занести все доступные здания в бд аи
подробнее в статьях
ответ
ответ
Все. Я нашел. Оказывается, изменить место расположения иконки можно и без файла "Units/CommandFunc.txt". Просто в способностях можно изменить.

23

» WarCraft 3 / Оплетение рудника

Похожие вопросы:

ответ
К руднику нужны нестандартные способности с участием "того самого" светляка.
ответ
оплетение рудника происходит методом замены объекта рудника на объект оплетённого рудника, никто не запрещает делать это вручную.
ответ
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
  1. Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
  2. Можно от даммика развеяние нежити за 0.01 сек.
  3. Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
ответ
Ikobot:
Можно сделать способность на основе "превращения в зомби" с передачей контроля игроку. И сделать дамми работников, которые будут в невидимости таскать золото, в зависимости от кол-во рабов на борту рудника.
Можно сделать невидимое "Древо Жизни" которое привязано к зданию и живет до тех пор, пока живет главное здание, главное связать здания триггерно.
Я придумал закинуть пустить корни в книгу заклинаний и заблокировал ее, в вобщем оплетение работает, сейчас другая проблема в другом вопросе))

23

» WarCraft 3 / Рандом выбор .

Похожие вопросы:

ответ
GF RaiseD:
На сайте имеется статья. Если же тебя интересует как сделать чтобы эти расы можно было выбирать в меню игры, а не непосредственно в игре - ищи в гугле [Warcraft 3 Nirvana Mod]. Отвечая на вопрос: возможно.

23

» WarCraft 3 / Массивы

Похожие вопросы:

ответ
Local integer i = случайное число от 1 до 3
Local integer h = случайное число от 1 до 3
Local integer j = 0
Local integer k = взять кол-во юнитов в области locations[h]
Local location p
If k < 1 then
Set p = GetRectCenter( locations[h] )
Call createUnitAtLoc( buildings[i], player(0), p )
Loop
Exitwhen j > 3
Call createUnitAtLoc( units[i], player(0), p )
Set j = j + 1
Endloop
Call removeLocation(p)
Set p = null
Endif
Пишу с телефона, поэтому в карту заноси это сам
ответ
Это число обозначает, сколько элементов массива заполняется в начале игры значением по умолчанию. Настоящий размер массива всегда 8192.
Т.е. если ты ставишь "Раз. 3" и "Нач. знач. 1", то первые 3 элемента массива будут равны 1, а значение следующих будет неопределенным.
ответ
Чето совершенно непонятно что вам нужно, найти тот таймер и его индекс в массиве, который истек и запустил триггер?
Ну очень просто , перебором в цикле всех таймеров и смотреть кто истек, тот кто истек того индекс вы и получите, считая шаги цикла.
В чем проблема?.
(100+ таймеров и массив по мне идиотия, неужели нельзя было воспользоваться хештаблицей и создавать\удалять таймеры по мере надобности)
ответ
надо писать
effect array eff[5]
ответ
Самым эффективным решением будет периодический перенос юнита-инвентаря к герою, юниту можно дать boolean флаг "isSelected"

23

» WarCraft 3 / Нанесение урона

Похожие вопросы:

ответ
Полагаю, действия "группа игроков" - лишние. Просто пикай юнитов. И не в регионе, а в радиусе. Там должно быть действие "пикнуть юнитов в радиусе, которые соответствуют каким-то условиям". Вот в matching condition и проверяй "правильность" юнита.
ответ
на сколько я понял твой триггер срабатывает при получении урона определённым юнитом
и ты вызываешь в нём этот триггер
который наносит урон этому самому юниту
в результате опять срабатывает отлов урона
и опять наносится урон
и опять ...
в общем получается рекурсия и вар выкидывает из за переполнения стека
кстати почему бы не сделать отлов урона в 1 триггере?
ответ
Кастовать способности даммиком и отлавливать урон от него.
ответ
Как вариант, можно найти в системе действия, в которых триггерно наносится урон юниту (потеря жизней), и отлавливать уже оттуда.
ответ
Ghostly:
Hate, мне нужен рабочий вариант чтоб меняя свои данные я понял что влияет на работоспособность,а что нет.В твоей же я увидел цифры по 15сек думал атк и будет работать,а на деле только 9 сек рабочих.Напрашивается вывод где из всех тех цифр отвечающие за продолжительность. Может у кого есть уже наработка с хотами,дотами,периодическими событиями,киньте будьте добры,буду разбираться.
это и есть рабочий вариант, слов нет.
там урон наносится каждые 5 секунд в течении 15, если бы вы потратили хоть толику внимания на гребаные триггеры вы бы заметили цифры которые там есть
раз
два
три
читать умеем? считать умеем?

23

» WarCraft 3 / Строительство

Похожие вопросы:

ответ
Ну можно триггерно их "строить", когда нужно получать % их готовности.
Здание закладывать и паузить, триггерно увеличивать переменную и приравнивать в ней текущий % постройки.
Работоспособно.
ответ
Steal nerves:
Да. Сам id-приказ - равкод постройки (или тип постройки). У рабочего открывается меню строительства, выбираешь постройку, нажимаешь на иконку. Но ничего не происходит, так как надо еще для окончательного результата выбрать место строительства. Через событие "юнит - получил приказ (точка)" ловится приказ в тот момент, когда юнит получил приказ и побежал устанавливать основание. И точку приказа можно отследить.
ответ
Можно дать юниту какую-нить абилку и все время через Force UI Key заставлять игрока ее нажимать пока этот юнит выбран
И как только он эту абилку использует, значит меню закрыто
ответ
нет, скорее вшиты в коде, как заливка синим при нехватке маны

23

» WarCraft 3 / Стандартные способности

Принятый ответ
Похожие вопросы:

ответ
да
в движке вара
если найдёшь исходник вара
ответ
параметры способностей хранятся в slk таблицах в mpq архивах
параметры применения способностей хранятся в game.dll
ответ
Steal nerves:
В натуре баг такой? Проверил только что. Улучшение эльфам можно не делать на доспехи. Короче эльфы читеры
ответ
ии я очень сложный замутил 4х ступенчатый (не для босов)так как при строительстве его я думал что движок будет пулять спеллы,его придёться переписывать,но я нашел решение если за моба стоит комп то спелы во вкладке нейтрально посивные он будет юзать но не все главное условие чтобы был комп назначен
ответ
Сделай на основе берсерка и кидай сетку через созданного в позиции кастера даммика (невидимого юнита), даммика потом убираешь